var __extends = this.__extends || function (d, b) {
    function __() { this.constructor = d; }
    __.prototype = b.prototype;
    d.prototype = new __();
};
/// <reference path="app.ts" />
/// <reference path="tsUnit.ts" />
var Tests;
(function (Tests) {
    var Registration = (function () {
        function Registration() { }
        Registration.compose = function compose(test) {
            test.addTestClass(new Tests(), 'Tests');
        };
        return Registration;
    })();
    Tests.Registration = Registration;    
    var Tests = (function (_super) {
        __extends(Tests, _super);
        function Tests() {
            _super.apply(this, arguments);

        }
        Tests.prototype.setUp = function () {
            this.fizzBuzzHelper = new FizzBuzzHelper(new Kata.FizzBuzz());
        };
        Tests.prototype.getOutputWith1Expect1 = function () {
            this.fizzBuzzHelper.getOutputTestCase(1, '1');
        };
        Tests.prototype.getOutputWith2Expect2 = function () {
            this.fizzBuzzHelper.getOutputTestCase(2, '2');
        };
        Tests.prototype.getOutputWithMultipleOf3ExpectFizz = function () {
            var expected = 'Fizz';
            this.fizzBuzzHelper.getOutputTestCase(3, expected);
            this.fizzBuzzHelper.getOutputTestCase(6, expected);
            this.fizzBuzzHelper.getOutputTestCase(9, expected);
        };
        Tests.prototype.getOutputWithMultipleOf5ExpectBuzz = function () {
            var expected = 'Buzz';
            this.fizzBuzzHelper.getOutputTestCase(5, expected);
            this.fizzBuzzHelper.getOutputTestCase(10, expected);
            this.fizzBuzzHelper.getOutputTestCase(20, expected);
        };
        Tests.prototype.getOutputWithMultipleOf3And5ExpectFizzBuzz = function () {
            var expected = 'FizzBuzz';
            this.fizzBuzzHelper.getOutputTestCase(15, expected);
            this.fizzBuzzHelper.getOutputTestCase(30, expected);
            this.fizzBuzzHelper.getOutputTestCase(45, expected);
        };
        Tests.prototype.getOutputWithMultipleOf7ExpectWhizz = function () {
            var expected = 'Whizz';
            this.fizzBuzzHelper.getOutputTestCase(7, expected);
            this.fizzBuzzHelper.getOutputTestCase(14, expected);
        };
        Tests.prototype.getOutputWithMultipleOf3And7ExpectFizzWhizz = function () {
            var expected = 'FizzWhizz';
            this.fizzBuzzHelper.getOutputTestCase(21, expected);
            this.fizzBuzzHelper.getOutputTestCase(42, expected);
        };
        Tests.prototype.getOutputWithMultipleOf5And7ExpectBuzzWhizz = function () {
            var expected = 'BuzzWhizz';
            this.fizzBuzzHelper.getOutputTestCase(35, expected);
            this.fizzBuzzHelper.getOutputTestCase(70, expected);
        };
        Tests.prototype.getOutputWithMultipleOf3And5And7ExpectFizzBuzzWhizz = function () {
            var expected = 'FizzBuzzWhizz';
            this.fizzBuzzHelper.getOutputTestCase(105, expected);
            this.fizzBuzzHelper.getOutputTestCase(210, expected);
        };
        return Tests;
    })(tsUnit.TestClass);    
    var FizzBuzzHelper = (function (_super) {
        __extends(FizzBuzzHelper, _super);
        function FizzBuzzHelper(fizzBuzz) {
                _super.call(this);
            this.fizzBuzz = fizzBuzz;
        }
        FizzBuzzHelper.prototype.getOutputTestCase = function (num, expected) {
            var result = this.fizzBuzz.getOutput(num);
            this.areIdentical(expected, result);
        };
        return FizzBuzzHelper;
    })(tsUnit.TestClass);    
})(Tests || (Tests = {}));
((function () {
    var test = new tsUnit.Test();
    Tests.Registration.compose(test);
    test.showResults(document.getElementById('result'), test.run());
})());
//@ sourceMappingURL=tests.js.map
